/**
@brief module de gestion de Mario
@file mario.h
@date 2012/06/07
*/

#ifndef __MARIO__H
#define __MARIO__H

#include "terrain.h"
#include "bombe.h"


/**
\struct mario mario.h
@brief contient les coordonnées, ainsi qu'un tableau de bonus de Mario
*/
struct mario
{
    int x;
    int y;
    int tabBonus[5];
    time_t heureInvincibilite;
    /*
    tabBonus est un tableau de taille fixe.
    tabBonus[0] = nombre de points de vie
    tabBonus[1] = nombre de bombes
    tabBonus[2] = vitesse de Mario
    tabBonus[3] = puissance des bombes
    tabBonus[4] = invincibilité
    */

}; typedef struct mario mario;

/**
@brief initialise un mario
@param[in,out] mario pointeur sur mario
@param[in] x entier
@param[in] y entier
@return none
*/
void marioInit(mario* mario, const int x, const int y);

/**
@brief déplace Mario vers la gauche
@param[in,out] mario pointeur sur mario
@param[in] ter pointeur sur terrain
@return none
*/
void marioGauche(mario* mario, const terrain* ter);

/**
@brief déplace Mario vers la droite
@param[in,out] mario pointeur sur mario
@param[in] ter pointeur sur terrain
@return none
*/
void marioDroite(mario* mario, const terrain* ter);

/**
@brief déplace Mario vers le haut
@param[in,out] mario pointeur sur mario
@param[in] ter pointeur sur terrain
@return none
*/
void marioHaut(mario* mario, const terrain* ter);

/**
@brief déplace Mario vers le bas
@param[in,out] mario pointeur sur mario
@param[in] ter pointeur sur terrain
@return none
*/
void marioBas(mario* mario, const terrain* ter);

/**
@brief pose une bombe aux coordonnées de mario
@param[in,out] mario pointeur sur mario
@param[in] ter pointeur sur terrain
@return none
*/
void poseBombe(mario* mario, terrain* ter, const int numJoueur);

/**
@brief récupere la coordonnée x de mario
@param[in] mario pointeur sur mario
@return entier
*/
int marioGetX(const mario* mario);

/**
@brief récupere la coordonnée y de mario
@param[in] mario pointeur sur mario
@return entier
*/
int marioGetY(const mario* mario);

/**
@brief ajoute un bonus à mario
@param[in,out] mario pointeur sur mario
@param[in] codeBonus entier
@return none
*/
void marioSetBonus(mario* mario, const int codeBonus);

/**
@brief Supprime un mario
@param[in,out] mario pointeur sur mario
@return none
*/
void marioLibere(mario* mario);

#endif
